/*!
 * cadastro.js
 * @project MB Consultoria Jurídica
 * @author Thiago Braga <thibraga06@gmail.com>
 * @designer Ana Lau <contato@analau.com.br>
 * @url www.mbconsultoriajuridica.com.br
 */


var add = $('.add'),
  salvar = $('#salvar'),
  form = $('#processos'),
  cpf_requerido = $('#cpf-requerido'),
  nome_requerido = $('#nome-requerido'),
  rg_requerido = $('#rg-requerido'),
  profissao_requerido = $('#profissao-requerido'),
  estado_civil_requerido = $('#estado-civil-requerido'),
  endereco_requerido = $('#endereco-requerido'),
  cnpj = $('#cnpj'),
  numero = $('#numero'),
  ordem = $('#ordem'),
  advogado = $('#advogado'),
  jurisdicao = $('#jurisdicao'),
  proximo = $('#proximo-andamento'),
  valor = $('#valor');


/**
 * @function addInputField
 * @description Adiciona novos campos ao formulário
 * @param {[type]} event [description]
 * @param {HTMLElement} element O elemento HTML que realiza a inserção.
 */
var addInputField = (function (element) {
  var span = element.parentNode.parentNode.getElementsByTagName('span');
  element = element.parentNode.parentNode.insertBefore(element.parentNode.cloneNode(true), span);
  element.innerHTML = element.innerHTML.replace('Adicionar', 'Remover');
  element.innerHTML = element.innerHTML.replace('add', 'remove');
  $('.maskCpf').mask('999.999.999-99').focus();
});


/**
 * @function checkCpf
 * @description Check the CPF via ajax. Overwrite the checkCpf app function.
 */
var checkCpf = (function (event) {
  cpf = $(event.target);
  if (cpf.val().replace(/[^\d]+/g, '') != '') {
    var data = { cpf: cpf.val().replace(/[^\d]+/g, '') };
    if (validateCpf(data.cpf)) {
      $.post(base_url('processos/ajax_cpf'), data, function (response) {
        if (response.success) {
          cpf.siblings('.usuario').val(response.id);
          cpf.siblings('.nome-requerente').val(response.nome).focus();
        } else {
          var div_modal = $('#div-modal'),
            modal_header = $('#result-header'),
            modal_body = $('#result-body'),
            modal_footer = $('#result-footer');
          modal_header.html('Novo usuário');
          modal_body.html('\n\
            <p>Insira os dados do novo usuário. O CPF será o login do usuário. Não é possível alterar o CPF posteriormente.</p>\n\
            <form id="new-user" class="form-cadastro form-horizontal">\n\
              <fieldset>\n\
                <div class="control-group">\n\
                  <label class="control-label" for="cpf">Login</label>\n\
                  <div class="controls">\n\
                    <span class="cpf-requerente view-data">'+ maskCpf(data.cpf) +'</span>\n\
                    <span class="help-block">Não é possível alterar o CPF posteriormente.</span>\n\
                  </div>\n\
                </div>\n\
                <div class="control-group">\n\
                  <label class="control-label" for="nome">Nome</label>\n\
                  <div class="controls">\n\
                    <input id="nome" name="nome" class="input-xlarge" type="text" required />\n\
                  </div>\n\
                </div>\n\
                <div class="control-group">\n\
                  <label class="control-label" for="email">E-mail</label>\n\
                  <div class="controls">\n\
                    <input id="email" name="email" type="email" required />\n\
                  </div>\n\
                </div>\n\
                <div class="control-group">\n\
                  <label class="control-label" for="senha">Senha</label>\n\
                  <div class="controls">\n\
                    <input id="senha" name="senha" class="input-medium" type="password" required />\n\
                  </div>\n\
                </div>\n\
                <div class="control-group">\n\
                  <label class="control-label" for="repeat">Repita a senha</label>\n\
                  <div class="controls">\n\
                    <input id="repeat" class="input-medium" type="password" required />\n\
                  </div>\n\
                </div>\n\
              </fieldset>\n\
            </form>');
          modal_footer.html('<button id="save-modal" class="btn btn-inverse">Salvar</button>\n\
            <button class="btn" data-dismiss="modal" aria-hidden="true">Cancelar</button>');
          div_modal.modal('show');
        }
      }, 'json');
    } else {
      noty({ text: 'CPF inválido.' });
      cpf.val('');
    }
  }
});


/**
 * @function removeInputField
 * @description Adiciona novos campos ao formulário
 * @param {[type]} event [description]
 * @param {HTMLElement} element O elemento HTML que realiza a inserção.
 */
var removeInputField = (function (element) {
  element = element.parentNode.parentNode.removeChild(element.parentNode);
});


/**
 * @function _mask
 * @description Set the mask of input fields
 */
var _mask = (function () {
  cpf_requerido.mask('999.999.999-99');
  cnpj.mask('99.999.999/9999-99');
  numero.mask('9999999-99.9999.999.9999');
  ordem.mask('9999/99');
  proximo.mask('99/99/9999');
  valor.maskMoney({
    defaultZero: false,
    thousands: '.',
    decimal: ',',
    allowZero: false,
    allowNegative: false
  });
})();


/**
 * @function _datepicker
 * @description Instantiates the Bootstrap Datepicker plugin.
 */
var _datepicker = (function () {
  var date = $('.date');
  date.datepicker({
    format: 'dd/mm/yyyy',
    language: 'pt-BR',
    orientation: 'top' });
})();


/**
 * @function newUser
 * @description Save a new user with modal data.
 * @todo Preencher campo nome automaticamente ao fechar modal.
 */
var newUser = (function () {
  var data = {
    cpf: $('.cpf-requerente').text().replace(/[^\d]+/g, ''),
    nome: $('#nome').val(),
    email: $('#email').val(),
    senha: $('#senha').val(),
    grupo: 5
  };
  $.post(base_url('usuarios/ajax_save'), data, function (response) {
    if (response.success) {
      noty({ text: response.message });
      $('#div-modal').modal('hide');
    }
  }, 'json');
});

/**
 * @function saveForm
 * @description Save the form via ajax
 */
var saveForm = (function () {
  var usuario = $('.usuario'),
    array = [];
  for (var i = 0; i < usuario.length; i++)
    array.push(usuario.eq(i).val());
  proximo_andamento = proximo.val().split('/');
  var data = {
    numero: numero.val(),
    ordem: ordem.val(),
    jurisdicao: jurisdicao.val(),
    advogado: advogado.val(),
    valor: valor.val().replace(/\./g, '').replace(',', '.'),
    proximo_andamento: proximo_andamento[2] +"-"+ proximo_andamento[1] +"-"+ proximo_andamento[0],
    usuario: array,
    cnpj: cnpj.val().replace(/[^\d]+/g, ''),
    cpf_requerido: cpf_requerido.val().replace(/[^\d]+/g, ''),
    nome_requerido: nome_requerido.val(),
    rg_requerido: rg_requerido.val(),
    profissao_requerido: profissao_requerido.val(),
    estado_civil_requerido: estado_civil_requerido.val(),
    endereco_requerido: endereco_requerido.val()
  };
  $.post(base_url('processos/ajax_save'), data, function (response) {
    noty({ text: response.message, type: response.type });
    $('#' + response.field).focus();
  }, 'json');
});


/**
 * @function saveFases
 * @description Salva as fases do processo.
 * @return {[type]} [description]
 */
var saveFases = (function () {
  var ocorrencia = $('#ocorrencia').val().split('/'),
    processo = window.location.href.replace('http://', '').split('/'),
    descricao = $('#descricao'),
    fase = $('#fase'),
    table = $('#fases-list');
  var data = {
    ocorrencia: ocorrencia[2] +"-"+ ocorrencia[1] +"-"+ ocorrencia[0],
    fase: fase.val(),
    descricao: descricao.val(),
    processo: processo[processo.length - 1]
  };
  $.post(base_url('processos/ajax_fases'), data, function (response) {
    noty({ text: response.message });
    table.find('tbody tr:last-child').after("<tr><td>"+ data.ocorrencia +"</td><td>"+ fase.find(':selected').text() +"</td><td>"+ data.descricao +"</td></tr>");
  }, 'json');
});

/* Events */
numero.focus();

salvar.on('click', function () {
  saveForm();
});

var save_fases = $('#save-fases');
save_fases.on('click', function () {
  saveFases();
});

$(document).on('click', '#save-modal', function (event) {
  event.preventDefault();
  newUser();
});

$(document).on('click', '.add', function () {
  addInputField(this);
});

$(document).on('click', '.remove', function () {
  removeInputField(this);
});